Apache Camel-এ Aggregation Strategy হল একটি কনসেপ্ট যা একাধিক মেসেজকে একত্রিত করে একটি একক মেসেজ তৈরি করার জন্য ব্যবহৃত হয়। Aggregation Strategy নির্ধারণ করে কিভাবে এই একত্রিতকরণের প্রক্রিয়া হবে এবং একত্রিত হওয়া ডেটার ফলাফল কিভাবে দেখতে হবে।
Aggregation Strategy হল একটি ইন্টারফেস যা AggregationStrategy
নামক ক্লাস থেকে বাস্তবায়িত হয়। এটি দুইটি মেসেজ (previous and current) গ্রহণ করে এবং নতুন মেসেজ তৈরি করে।
প্রথমে, একটি কাস্টম Aggregation Strategy ক্লাস তৈরি করুন যা AggregationStrategy
ইন্টারফেসকে বাস্তবায়ন করে। নিচে একটি উদাহরণ দেওয়া হলো:
import org.apache.camel.Exchange;
import org.apache.camel.processor.aggregate.AggregationStrategy;
public class MyAggregationStrategy implements AggregationStrategy {
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if (oldExchange == null) {
// প্রথম মেসেজ
return newExchange;
}
// নতুন মেসেজের কনটেন্ট নেওয়া
String oldBody = oldExchange.getIn().getBody(String.class);
String newBody = newExchange.getIn().getBody(String.class);
// একত্রিত মেসেজ তৈরি করা
String combinedBody = oldBody + "," + newBody;
// নতুন মেসেজ সেট করা
oldExchange.getIn().setBody(combinedBody);
return oldExchange;
}
}
এখন আপনার কাস্টম Aggregation Strategy ব্যবহার করে একটি Camel রাউট তৈরি করুন:
import org.apache.camel.builder.RouteBuilder;
public class AggregationRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("direct:start")
.aggregate(constant(true), new MyAggregationStrategy())
.completionSize(3) // তিনটি মেসেজ আসার পর একত্রিত হবে
.to("log:aggregatedResult");
}
}
import org.apache.camel.CamelContext;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.builder.RouteBuilder;
public class MainApp {
public static void main(String[] args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
// কাস্টম Aggregation Strategy ব্যবহার করে Route যুক্ত করা
camelContext.addRoutes(new AggregationRoute());
// ক্যামেল কনটেক্সট শুরু করা
camelContext.start();
// মেসেজ পাঠানো
camelContext.createProducerTemplate().sendBody("direct:start", "Message 1");
camelContext.createProducerTemplate().sendBody("direct:start", "Message 2");
camelContext.createProducerTemplate().sendBody("direct:start", "Message 3");
// কিছু সময়ের জন্য ক্যামেল চালিয়ে রাখা
Thread.sleep(5000);
// ক্যামেল কনটেক্সট বন্ধ করা
camelContext.stop();
}
}
Apache Camel-এ কাস্টম Aggregation Strategy তৈরি করা আপনাকে একাধিক মেসেজকে একত্রিত করে একটি নতুন ফলাফল তৈরি করতে সাহায্য করে। এই পদ্ধতিটি ডেটা সংগ্রহ, রিপোর্টিং এবং বিভিন্ন মেসেজ প্রসেসিংয়ের জন্য অত্যন্ত কার্যকরী। উপরোক্ত উদাহরণগুলি ব্যবহার করে আপনি সহজেই আপনার কাস্টম Aggregator তৈরি করতে পারেন।
আরও দেখুন...